<#noparse>#!/bin/bash

# ------------------------------------------------------------------------------
# 启动脚本：entrypoint.sh
# 描述：容器启动后执行，负责启动 Spring Boot 应用。
# 支持通过传参方式覆盖默认 JVM 启动参数或 Spring Boot 启动参数。
# 已接入 Dockerfile 中定义的 ARG 变量（通过 ENV 传入），并支持命名卷挂载。
# ------------------------------------------------------------------------------

set -e

# ------------------------------------------------------------------------------
# 构建期注入的环境变量（由 ARG 转 ENV），这些变量已在 Dockerfile 中设置：
# - APP_NAME         应用名称
# - APP_VERSION      应用版本
# - IMAGE_CREATE_TIME 镜像构建时间
# - IMAGE_OWNER      镜像构建者
# - LOG_ROOT         日志根目录（默认：/app/logs）
# ------------------------------------------------------------------------------

# ------------------------------------------------------------------------------
# 输出启动日志头信息，便于排查与追踪
# ------------------------------------------------------------------------------
echo "==================================================="
echo ">>> 启动应用 ${APP_NAME}:${APP_VERSION}"
echo ">>> 镜像构建时间：${IMAGE_CREATE_TIME}"
echo ">>> 镜像构建者：${IMAGE_OWNER}"
echo ">>> 容器启动时间：$(date '+%Y-%m-%d %H:%M:%S')"
echo ">>> JAR 包路径：/app/app.jar"
echo ">>> 日志目录挂载：${LOG_ROOT}"
echo ">>> 命名卷：${APP_NAME}"
echo ">>> Docker 启动传参：$@"
echo "==================================================="

# ------------------------------------------------------------------------------
# 创建日志目录（挂载路径为命名卷 ${APP_NAME}）
# 注意：如果宿主机未预创建挂载卷，Docker 会自动创建
# ------------------------------------------------------------------------------
mkdir -p "${LOG_ROOT}"

# ------------------------------------------------------------------------------
# JVM 启动参数（可通过 docker run -e JAVA_OPTS=... 传入覆盖默认值）
# 示例：-Xms512m -Xmx1024m -XX:+UseG1GC
# ------------------------------------------------------------------------------
JAVA_OPTS="${JAVA_OPTS:--Xms512m \
  -Xmx512m \
  -XX:+UseG1GC}"


# ------------------------------------------------------------------------------
# 启动应用（exec 用于替换 PID 1，避免产生僵尸进程）
# "$@" 接收 docker run 的传入参数，支持 Spring Boot 参数透传
# ------------------------------------------------------------------------------
exec java ${JAVA_OPTS} -jar /app/app.jar ${SPRING_OPTS} "$@" >> "${LOG_ROOT}/app.log" 2>&1

</#noparse>